Ну для блока урона нужно вручать абилку на 100500 хп, лечить юнита, ну а только потом, с помощью таймера на 0.00 сек. убирать абилку и ставить хп сколько было до всего этого дела.
Могу дать свою карту, там есть и детект физ урона без мемхака и блок урона и снижение урона.
всего 1 строчку. всего 1 аргумент. с нуля на 270 поменял и все. стандартное ориентация зданий = 270 град, записана в переменную. хотел чтобы вы сами помучались. пробуй брать гуи,конвентировать в код. сравнивали. пример статьи читали бы.
Все не то. Нужна группа юнитов. При смерти юнита узнается к какой группе он принадлежал (через ХТ или структуру). Юнит удаляется из группы. Если после этого группа остается пуста - запускать таймер респавна с коллбэком. Фсе. Никаких "посмотри как в доте", просто здравый смысл.
В коллбеке же запускать рандомно одну из функций создающую стак, передавать в нее ссылку на группу и записывать в эту группу созданных юников.
quq_CCCP, у меня крипы спавнятся не из одной точки. Крипы спавнятся в лагерях. В каждом лагере есть несколько точек спавна. При каждом спавне выбирается рандомная точка спавна из рандомного лагеря. Так что с реалистичностью у меня нет проблем.
local data = {}
for _, value in pairs(Creep) do
if type(value) == "table" and value.round ~= nil then
if data[value.round] == nil then
data[value.round] = {}
end
table.insert( data[value.round], value )
end
end
for key, value in pairs(data) do
local i = math.random(1, #value)
name [key] = value[i].name
stylizedName[key] = value[i].stylizedName
tip [key] = value[i].tip
prepare [key] = value[i].prepare
count [key] = value[i].count
limit [key] = value[i].limit
spawnCamp [key] = value[i].spawnCamp
startSound [key] = value[i].startSound
endSound [key] = value[i].endSound
pool [key] = value[i].pool
BJDebugMsg('Round ' .. key .. ': ' ..name[key])
end
Да, только это. У меня карта - арена и не хочется, чтобы юниты спавнились на трибунах или за воротами. А призвать нужно 3 типа юнита.
Берёшь точку под героем, и поляркой создаёшь три точки рядом (либо одну, если это будет удобно).
Типа так
set Type[1] = 'u001'
set Type[2] = 'u002'
set Type[3] = 'u003'
set P1 = позиция кастера
Цикл А от 1 до 3
set P2 = Полярка от P1 на дистанции 40. под углом ( А * 120. )
Боевая единица - Создать 1 юнита типа Type[A] в позиции P2
очистку и удаление точек - по желанию...
Типа как у стандартных призывов
set P1 = позиция кастера
set P2 = Полярка от P1 на дистанции 200. под углом поворота кастера
Боевая единица - Создать 1 юнита типа 'u001' в позиции P2
Боевая единица - Создать 1 юнита типа 'u002' в позиции P2
Боевая единица - Создать 1 юнита типа 'u003' в позиции P2
Eternal soul,
Способ что предложил я - вы формируете БД и далее циклом пробегаетесь по массиву unit_type_string[i] и сравниваете его с вашей строкой. Если сравнение прошло успешно то по индексу unit_type[i] находите нужного юнита. Конечно конвертировать было бы более проффесионально, но это способ тоже будет работать.
8gabriel8, приоритет менять нельзя
стандартный ии использует это поле для контроля юнитов
пишем свой ии в котором вместо приоритета юзаем свою переменную которой можем задавать любое значение 8gabriel8:
Но для меня это путь в Москву через Владивосток
ну если между тобой и Москвой находится Владивосток то иначе никак(а вар3 как раз расположен за Владивостоком)
а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
действие проиграть звук и указываешь твою фразу
выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
Сделать приказ построить это здание как способность, которая наводится на юнитов.
Ну и когда применили её - например создавать невидимого строителя и приказывать строить на нём.
Старый юнит можно убрать, или делать ему карту путей нулевую, чтобы не мешал строить.
Если охото сделать зарыды со счетчиком то тут 2 пути:
Юзать стандартные абилки со счетчиком зарядов, а их только 2 совы охотницы и вспышки орудийного расчета гномов. Увы первая цель декор онли, вторая цель точка онли, на юнита никак, кстати хорошо подходит под кастом блинки, кастуется почти мгновенно, быстрее канала, без всяких рукомаханий.
Использовать N способностей с разными иконками, на которых будет изображен счетчик, изменяя уровень способности или вовсе весть скилл через 'Eneg' (Техника, скилл механика, позволяет изменять поля скиллов) то можно создать скиллы со счетчиком, допустим пока есть заряды у скилла нету кулдауна, скилл последнего заряда имеет кулдаун.
Увы туча ипорта да и найти качественные иконки со счетчиком дело непростое.
Для начала читаем правила
Затем, новичок самостоятельно сделать эти способности не сможет, если речь идёт о мультиплеере и оптимизированном исполнении.
И тебе лучше обратиться сюда:
Diazon, все дамики должны быть приатачены к зданию через структуры/хэш/массивы
при смерти просто грузим эти дамики по юниту и удаляем их
лично я бы делал структуру и цеплял её по индексу согласно хэндлу юнита
но так как ты не знаешь таких слов то юзай хэш-таблицы
Блин, так я пытался раньше сделать через ульту тинкера - превращение в робота или что-то такое. Но суть в том, что способность, которая должна быть у оригинала, остаётся у нового, а старая не добавляется. Делая через триггер добавление способности - она не считается как старая, то есть возможно прокачать её за скилл-поинты.
Ну и когда морф обратно, новая способность удаляется, старая - не добавляется. Через триггеры я пытался делать, но это ооочень сильно глючит и надо очень долго править. Собственно поэтому я и пришёл к мгновенной замене героя на другого, триггерно добавляя нужные способности. т.к у нового героя другие базовые способности, то и получается все без багов. Кроме, собственного, указанного в вопросе.
Более того, пытался делать через пустышку - но не смог сделать отсутствие иконки, а это все портит.
Проблема решена - нашел вопрос со скрытие иконки и ответ на него
Ответ. Кроме вычислительного предела есть еще лимит создания новых потоков. Оба вида загруженности вызывают характерное падение мощности. Но попытка оценить работу с помощью только одного критерия будет заведомо ошибочной.
Событие:
Generic unit Умирает
Условие:
(Dying unit) не равно Здание
Level of ability [Пассивка] of (Killing unit) больше 0
Действие:
Игрок - Add gold (тут следовало бы поставить формулу, что количество золота умножается на уровень пассивки или как-то так)
Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
Ну что пацаны Datamanager ?
Дам подсказку, смотреть на систему ливов и сыгранный игр, там переменная сама инкрементируется за каждый запуск игры, и сама подгружается, но надо включить локальные файлы и сделать привязку к нику и зашифровать данные, ибо иначе тут всё в открытом виде, можно сбрасывать значение
в чем редактор вкв3 отличается от редактора ск2 - к сожалению, в вк3-шном эдиторе не удастся отловить все данные.
если ты скажешь, что конкретно делает твой спелл, тебе могут подсказать более легкий вариант исполнения
насчет спецэффектов - утечка решается просто
создаешь точку, если спец на земле. если спец на юните, точка не требуется.
собсно воспроизводишь спец
и сразу его удаляешь. спец удалится тогда, когда доиграет до конца его анимация
кастом скриптом удаляешь точку, если 1 часть 1 пункта актуальна
Потому что несуществующая модель и невидимая вроде по-разному обрабатываются.
одинаково
короче, нашел решение проблемы
проблема в том, что в варкрафте кое какие криворукие программисты забабахали офигенную логику освещения , из-за которых фильтры оверлея берут за основу освещение в точке x=0. y=0. z=0. карты, если там нет освещения значит фильтр думает что и он тоже должен без освещения, решение данной проблемы является расположение модели с источником освещения по координатам в точном центре карты (включая z) и виженом для игрока в данной точке
оригинал темы с решением проблемы, а так же тест карта с моделью освещения по ссылке
Эмм как насчет глобальных переменных, т.к в фильтрах ты не создаешь условия а только делаешь проверки, без разрыва потока вейтами, то глобалки доступное и изящное решение.
quq_CCCP, пробовал, но что-то не получилось. вставил войска вокруг рудника, и рабы не могли войти в внутрь. Но это не из-за этого.
Все выяснил в чем дело.
нашел ответ
Сначала не понимал, почему вообще не хотело работать это. Везде тыкал, и проверял функцией, и дебагом выводил на экран. Абсолютно везде говорило, что можно передвигаться работникам (даже в воде).
Теперь врубился, почему так было. Нужно было создать блокиратор пути с PATHING_TYPE_PEONHARVESTPATHING. Было два варианта. Либо нарисовать "текстурку + декор" или через "триггеры". Хотя нарисовать текстуру в фотошопе как в статье xgm.guru/p/wc3/pathing-alternate мог, но не знал какого цвета, в статье не показано какого цвета тип PATHING_TYPE_PEONHARVESTPATHING. Или через триггеры см. карту xgm.guru/p/wc3/181384
Хотя создать блокиратор это было полбеды, нужно было понять почему не работает. Работники бегают по участку, то не бегают. Фиг поймешь. Этого можно было бы не заметить (в своей карте пришлось участок визуально рельефом приукрасить, чтобы мог отличать), чтобы понаблюдать. Потом заметил, что вурдалак неся срубленные деревья домой, начал обходить.
Работники когда идут добывать ресурсы, блокиратор их впускает (бывает и не хочет впускать). Но как только они добудут ресурсы, то получат приказ "resumeharvesting" и побегут домой. Тогда встречают в блок. И придется обходить участок. Правильно делают вурдалаки, хотя не всегда. А вот рабы орков и Альянса не правильные какие-то. Они встанут у границы, постоят 2-5 секунд. И походят у границы (туда-сюда), и находят как-будто бы "невидимую" щель, и все по одному входят.
Хотя это работает немного криво (у меня). Работники не хотят обходить участок, это раз. Во-вторых, работников могут впустить. то могут выпустить. Не понятно, что такое.
Насчет светлячков, их даже рассматривать не стал, так как добывают на одном месте.
Может, все дело в переменных? Попробуй в настройках поставить галочку копировать переменные вместе с триггерами или, если не сработает для твоего глючного редактора, попробуй скопировать переменные вручную перед триггерами.
Для аттачей необходимо использовать способность Tree of Life upgrade ability (Atol), видна только в JNGP, но при помощи некоторых манипуляций можно и в Reforged увидеть.
Альтернатив не так много, о них уже сказал Extremator.
Для этого берутся либо ауры (тогда в них ещё можно и специфический бафф накладывать на носителя), либо абилки от "когтей атаки" и "кольца защиты" (дающие +атаки и +защиту, в них точно так же как в ауре настраиваются точки крепления и модели)
Использовать способность Shpere (Asph) или аналоги у духов возмездия не рекомендуются.
PyCCKuu_4eJl, а причем тут аура торнадо? Если стан это стан, особый флаг + приказ смотреть на источник стана.
Не пойму почему не молоток бурь а аура торнадо?
Кажеться я разобрался с крашем и десинком, хотя я так не до конца понял почему именно из-за этих двух вещей происходит такая фигня.
Краш при падении артефакта скорее всего связан с лидербордом где отображаются результаты розыгрыша. Каждую секунду у лидерборда меняется название мб краш как-то связан с этим. По крайней мере этим можно объяснить почему игроков крашило по очереди с некоторой периодичностью. Теперь убрав этот лидерборд и откатав 30+ игр никаких крашей при падении артефактов обнаружено не было. Но конечно хотелось бы понять как лидерборд мог вызвать такие странные краши. Мб конфликт с локальными мультибордами?) Хотя я хз.
Десинхрон в начале волны с 1-м боссом. Я просмотрел 6 реплеев с игр когда вылетали игроки и выяснил что каждый раз это происходило когда их атаковал танк на котором приезжает босс. Танк имеет способность москиты и Тип Атаки - мгновенный и Тип Урона - мили. Мб какое-то сочетания настроек атаки и москитов давало такой странный результат.
8gabriel8, Ландшафт собственно не пострадал, просто размеры карт кардинально не совпадают и мне самому проще как-то не по человечески копировать ландшафт и декор, так что вот такие пироги RiderOfBalance, Ок, я нашёл открытый дрп и скопировал от туда триггеры и заменил. Та открытая дрп работает, на своём я ещё не пробовал, но надеюсь что всё будет работать. RiderOfBalance, я поставил триггеры с открытой соты, всё ещё не работает, так же я попробовал вообще удалить триггеры и так же всё ещё не работало. Следовательно, скорее всего триггеры тут не причём...
war3map.j:1: parse error
war3map.j:1: Statement outside of function
war3map.j:1: Statement outside of function
war3map.j:1: Statement outside of function
war3map.j:2: Statement outside of function
war3map.j:2: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:3: Statement outside of function
war3map.j:4: Statement outside of function
war3map.j:4: Statement outside of function
war3map.j:7: Undeclared variable cj_tmpgr_copy_nw509ert7
war3map.j:9: parse error
war3map.j:9: Statement outside of function
Ниже скриншот с начало .j кода.
Это лишь малая часть проблем, так же в коде есть переменные, чьи имена начинаются с цифр (что недопустимо во всех языках программирования, если мне не изменяет память).
Собственно потому, в .j миллиард ошибок, можешь приложить оригинал карты? Потому что версию, что ты загрузил имеет просто умертвлённый скрипт.
Просто это одна из способностей, у которой такая фигня получается. У тебя в поле заклинания должно быть два значения. Производная от печати преисподней и от Печати преисподней (слуга)
необязательно делать два триггера, можно сделать 1 с этим событием с условием (Владелец (Переключающий юнит)) равно Нейтрально-враждебный а остальные условия поместить в отдельный if/then/else multiple conditions, хз как называется этот пункт в русском редакторе, но он где-то в первых 15 строчках.
Хотя знаешь мне лень писать, вот так можно сделать в твоём случае
Если ты хочешь посылать куда-то юниты, то лучше давай их другому игроку, не нейтрально-враждебному
В русских триггерах переключающий юнит (в англ. триггерах triggering unit) - это юнит, на которого ссылается триггер. Эти все переменные зависят от событии. Вот в событий - юнит умирает, две переменные - это умирающий юнит (Dying unit), и убийца (Kiling unit). Конкретно триггер ссылается на умирающего юнита, то есть здесь
умирающий юнит = переключающий
Есть много похожих событий, где встречается переключающий.
Например, в событий "юнит применяет способность" выделяются две переменные "кастер" (англ. Casting unit) и "юнит-цель" (Target unit of ability being cast). Конкретно триггер ссылается на кастера.
кастер = переключающий
или например в событий юнит - получил приказ
выделяется переменная "юнит-получил приказ" (ordered unit) и цель (если есть, а то есть приказы без цели)
юнит, получивший приказ = переключающий
часто удобно еще владельца переключающего юнита находить
обычно пишут владелец переключающего юнита, а надо бы trigger player (переключающий игрок)
как называется юнит который начал строительство?
я хочу убить юнита который начал строительство
в событии - юнит начинает строительство
есть переменная : строящее здание (Consrtucting structure)
в событии - юнит завершает строительство
переменная завершенная постройка (Consrtuctied structure).
Конкретно события ссылаются на строящее здание, то есть переключающий юнит = здание. А вот строителя нельзя найти.
и мне нужно чтобы здание, строительство которого было начало мгновенно построилось!
но когда я ставлю триггерно
Боевая единица- Определить [Сооружает структуру] процесс строительства [100%]
у меня действительно ставиться полоса строительства как 100% но само строительство не заканчивается. :(
получается стоит стройка здания которое построилось на 100%
Ты про ту функцию
native UnitSetConstructionProgress takes unit whichUnit, integer constructionPercentage returns nothing
Боевая единица - Set Building Construction Progress
чего-то тоже у меня не работает эта функция совсем, может не правильно юзаю, на форуме мало что нашел.
чего-то тоже у меня не работает эта функция совсем, может не правильно юзаю, на форуме мало что нашел.
Короче заработало.
Если рабочий будет строить, а ты в это время воспользуешься этой функции по "событию - юнит начинает строительство" ничего не сработает. Странно как-то. Нужно добавлять 100% после некоторого времени. Спустя 0,01 секунду.
Убрать рабочего после того как в начале возведет фундамент, так да, полоска в 100% то останется =(( Полоска убирается, если рабочий придет и достроит (хотя уже достраивать нечего =( , полное хп )
У рабочего есть способность "ремонтировать". Там надо смотреть.
Советую так:
Юнит - начинает строительство
действие - ждать 0,01 секунд
действие - Боевая единица- Определить [Сооружает структуру] процесс строительства [100%]
следующий момент
юнит - завершает строительство
действие - удалить или убить строителя
Кстати в событий "юнит завершает строительство" и "юнит завершает строительство" нет ссылки на строителя. Только на построенное только что здание. Но эта проблема решаема. Нужно отслеживать приказ строителя, только на форуме одному делал наработку найти не могу, не пойму как делал
как отследить строителя, это делается по приказу
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
событие - юнит отдал приказ без цели
условие - целочисленное (id приказ) = 851994
приказ 851994 почему-то не отслеживается, он лишь позволяет открыть меню строительства. не катит. пробую тогда потом другое выбираем постройку в меню строительства, и строитель бежит строить.
событие - юнит отдал приказ цель
условие - классификация цели = здание или дерево
казалось бы все так, но недостаток в том, что он может за это время, пока бежит к точке строительства, передумать по желанию игрока. Поэтому надо смотреть, заранее там кучу событий и условии, короче проверок что если там пойдет не так
событие - юнит отдал приказ цель
условие - приказ = repair
можно использовать приказ repair. Короче от способности "ремонтировать" При строительстве и ремонте у орков и людей есть такая фишка. А вот у эльфов нет. Недостаток конечно. И еще рабочий может пойти ремонтировать здание, однако тут срабатывает приказ "smart", который равнозначен "repair". Когда строит/ремонтирует работник можно выяснить текущий приказ. У работника в этот может приказ repair а у светлячка при строительстве id здания, а при ремонте у светлячка id от "обновление".
Для начала создаешь способность вампиризма, например с 4 уровнями.
1 уровень - 25%
2 уровень - 50%
3 уровень - 75%
4 уровень - 100% вампиризма.
Если нынешнее здоровье героя деленное на максимальное здоровье этого же героя < 0,25 - делаем четвертый уровень способности.
Если нынешнее здоровье героя деленное на максимальное здоровье этого же героя < 0,50 - даем третий уровень способности
И т.д.
» WarCraft 3 / Система Спавнов
» WarCraft 3 / Типы юнитов
» WarCraft 3 / Как определить главную характеристику героя?
» WarCraft 3 / Очень нужна помощь с триггером
» WarCraft 3 / Строительство нежити
» WarCraft 3 / Как стакается способность?
» WarCraft 3 / Как сделать подобную вещь?
» WarCraft 3 / Редактор Reforged
» WarCraft 3 / Лимит героев и героя
» WarCraft 3 / Масштабирование эффекта
» WarCraft 3 / Подскажите как сделать способность.
» WarCraft 3 / Анимации Атаки
» WarCraft 3 / Как узнать иконку юнита
» WarCraft 3 / Нужна Save\load система
» WarCraft 3 / Видимость спецэффекта
» WarCraft 3 / Фильтры
» WarCraft 3 / Рельеф / Вода / Склон с водой
» WarCraft 3 / Постоянно вылетает карта
» WarCraft 3 / Анимации
» WarCraft 3 / Нужна помощь в обучении
» WarCraft 3 / Проверка золота игрока.
» WarCraft 3 / Ошибка краша игры.
» WarCraft 3 / Описание заклинания/эффекта
» WarCraft 3 / Помогите с триггером
» WarCraft 3 / Описание